<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head>
  
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">

  
  <link rel="stylesheet" href="../rurple.css" type="text/css">
  <title>8. Maudits bugs!</title>

  
</head><body>
<h2 class="title">8. Maudits bugs ! <img src="../../images/intro/b_shake.gif" alt="darn bugs"></h2>

<p>Personne n'aime parler des bugs informatiques. Je vais donc essayer
de ne pas trop m'étendre dans cette leçon. Tout ce que je vous demande
est de la lire. Je ne vous demanderai pas d'écrire des programmes avec
des bugs !</p>

<h3 class="section">Qu'est-ce qu'un bug ?</h3>

<p>[NdT: bug en anglais = insecte, bestiole]<br>
</p>

<p>L'origine du mot <b>bug</b> dans le jargon informatique est souvent
attribuée à un incident réel où une mite a été trouvée à l'intérieur de
l'ordinateur Mark II de l'Université de Harvard ;&nbsp; apparemment,
cette mite avait empêché l'ordinateur de fonctionner. Elle a été
trouvée par l'équipe de la célèbre informaticienne mathématicienne et
jeune officier naval Grace Murray Hopper, qui venait d'inventer le
concept des langages de compilation en programmation. Dr. Grace Hopper
a finalement atteint le grade de Contre-Amiral dans la marine
américaine.</p>

<p>La mite a été préservée, scotchée dans le journal de bord de Hopper,
comme vous pouvez le voir ci-dessous. Un commentaire intéressant y est
noté : "Premier véritable cas de bug découvert" (<span style="font-style: italic;">"First actual case of bug being found"</span>).</p>

<p><img src="../../images/intro/first_bug.jpg" alt="first bug"></p>

<h6>Image adaptée de l'archive publique du <a href="http://www.history.navy.mil/photos/pers-us/uspers-h/g-hoppr.htm">Centre
historique de la Marine américaine </a></h6>

<p>En réalité, le mot bug dans un contexte technologique est attribué
par le dictionnaire Oxford English Dictionary à Thomas Edison. Selon ce
dictionnaire, le texte suivant peut être observé dans l'édition du 11
mars 1889 de la Pall Mall Gazette :</p>

<blockquote><cite>J'ai été informé qu'il a fallu que Mr. Edison reste
éveillé les deux nuits précédentes pour pouvoir découvrir 'un bug' dans
son phonographe - une expression signifiant résoudre une difficulté, et
insinuant qu'un insecte imaginaire se serait dissimulé à l'intérieur et
serait la cause de tous les problèmes.</cite></blockquote>

<p>Il apparaît donc que le 'bug' originel, bien qu'il soit bien un
insecte, était en fait imaginaire.</p>

<p>Malheureusement, les bugs informatiques, bien qu'ils ne soient pas
des insectes, ne sont pas non plus imaginaires.</p>

<h3 class="section">Résolution des bugs</h3>

<p>Dans le jargon informatique, un bug est une erreur qui fait qu'un
programme se comporte d'une manière inattendue. Si vous écrivez des
programmes, vous y aurez des bugs tôt ou tard - comme tout le monde.
Les bons programmeurs cherchent à "suprimer" les bugs ou les "corriger"
dès qu'ils trouvent que leur programme se comporte de manière
inattendue.</p>

<p>RUR-PLE a été conçu pour vous aider à trouver les bugs.</p>

<ol>

  <li>
    <p>La "fuite d'huile" du robot, laisse une trace derrière lui qui
vous permet de voir (<i>tracer</i>) les instructions suivies par le
robot.</p>
    <p><img src="../../images/intro/turn_left_end.png" alt="simple left turn"></p>
  </li>
  <li>
    <p>Chaque instruction [comme <tt>pick_beeper()</tt> ci-dessous],
est surlignée dans la fenêtre de programme quand elle est sur le point
d'être exécutée par le robot.</p>
    <p><img src="../../images/intro/highlight.png" alt="highlighted instruction"></p>
    <p><b><font color="#cc0000">Le surlignement des instructions peut
parfois causer des problèmes. Vous pouvez le désactiver ou le réactiver
en cliquant le bouton de surlignement</font></b> <img src="../../images/intro/btn_highlight.png" alt="highlight button"></p>
  </li>
  <li>
    <p>Vous pouvez mettre en "pause" un programme pendant qu'il
s'exécute en cliquant le bouton pause <img src="../../images/intro/btn_pause.png" alt="pause button">.
C'est semblable à ce que l'on appelle ajouter un <i>point d'arrêt</i>
dans un programme.</p>
  </li>
  <li>
    <p>Vous pouvez "exécuter pas à pas" un programme, une instruction à
la fois, en cliquant le bouton <i>exécute une instruction à la fois</i>
    <img src="../../images/intro/btn_step.png" alt="step button">.</p>
  </li>
  <li>
    <p>Vous pouvez modifier la vitesse à laquelle les instructions sont
exécutées en utilisant le contrôleur de vitesse <img src="../../images/intro/btn_speed.png" alt="speed button">. Plus vous
déplacer le curseur du contrôleur vers la droite, plus le programme
sera exécuté rapidement. Vous ne pouvez ajuster la vitesse qu'au début
du programme, elle sera reglée pour tout le programme. Pour les
programmes dont l'exécution est longue, vous pouvez commencer par
exécuter le programme rapidement, le mettre en pause quand vous
atteignez un point proche du moment où se produit le comportement
inattendu (le "bug"), et ensuite exécuter pas à pas la suite en faisant
attention, instruction par instruction.</p>
  </li>
  <li>
    <p>S'il vous arrive que vous ayez démarré un programme et que vous
vouliez l'arrêter avant qu'il arrive à sa fin, vous pouvez toujours
cliquer le bouton Arrêt <img src="../../images/intro/btn_stop.png" alt="stop button">.</p>
  </li>
  <li>
    <p>Au bas de l'écran, une barre d'état affiche : 1)
quel programme est chargé ; 2) l'état de ce programme; 3) le nombre de
sonnettes transportées par le robot ; 4) quel fichier de monde a été
chargé.<br>
    <img src="../../images/intro/fr_status_bar.png" alt="barre d'état"></p>
  </li>
  <li>
    <p>Si vous voulez redémarrer votre programme avec le robot au point
de départ d'origine, là où il se trouvait au début, quand vous avez
chargé le fichier de monde, vous devrez cliquer le bouton <i>remise à zéro
du fichier monde</i>  <img src="../../images/intro/btn_reset_world.png" alt="reset button">.</p>
  </li>
</ol>

<p>Ceci devrait vous suffire largement. Quand vous en saurez plus sur
la programmation, vous apprendrez d'autres astuces qui vous aideront à
trouver les bugs et à vous en débarrasser !</p>

<center>
<p><a href="7-beepers.htm"><img src="../../images/previous.png" alt="previous"> Sonnettes</a> -
<a href="../lessons_toc.htm"><img src="../../images/home.png" alt="home"></a>- <a href="9-walls.htm">Construction des murs <img src="../../images/next.png" alt="next"></a>
</p>
</center>

</body></html>